package basic01.basic;

/**
 * @author Mark
 * @version 1.0
 * @date 2020/5/16 14:03
 * @description 第一个hello-world程序
 */
public class HelloWorld {

    // 实例变量(不初始化就有默认值) boolean 默认为false
    boolean is;
    int age = 1;

    // 类变量
    private static double salary = 111;

    // 常量(修饰符无关顺序)
    public static final double PI = 3.14;

    public static void main(String[] args) {

        // 基本数据类型 64位电脑兼容32位电脑系统
        int i = 12;
        long l = 12L;
        short s = 12;
        float f = 12f;
        double d = 12D;
        byte t = 12;
        char c = '中';
        boolean b = true;
        System.out.println("salary = " + salary);

        // 整数扩展
        int i1 = 10;
        int i2 = 010;
        int i3 = 0x10;
        int i4 = 0x11;

        // 浮点数/double -银行数据
        float f1 = 0.1f;
        double f2 = 1.0 / 10;

        // false
        System.out.println(f1 == f2);

        // 所有的字符本质还是数字 UNICODE表
        System.out.println("hello world");

        // 转义字符 \t制表符  \n换行符
        String sq = "11";
        String s1 = new String("11");

        // 布尔值
        if (b) {
            // 默认是走正确
        }

        // 强制类型转换 低到高(精度/内存溢出)
        int i12 = 128;
        byte b1 = (byte) i12;

        // 自动类型转化 高到低(精度/内存溢出)
        double d1 = i12;

        // 不能进行对布尔值进行转化 boolean
        char a = 'a';
        int d11 = c + 1;
        char d111 = (char) d11;

        // JDK7新特性
        double do1 = 12_0000_0000;
        System.out.println("do1 = " + do1);

        // 变量(局部变量)/常量
        int type = 1;
        String str = "111";
        final String string = "00";

        // 算术运算法 (有long为long,没有则为int往大的走)
        long l1 = 2374632746L;
        int ll = 12;
        short sho1 = 12;
        byte by = 22;

        // 关系运算法 F/T boolean 取余%模运算 二元运算符 ++ -- 一元运算符 a++后 ++a前(执行的时机不同)

        // 幂运算 2^22
        double pow = Math.pow(2, 4);
        System.out.println("pow = " + pow);

        // 逻辑运算符 || && ! 与或非
        int duan = 5;
        boolean b2 = (duan < 4) && (c++ < 4);
        System.out.println(b2);
        System.out.println("duan = " + duan);

        // 位运算(二进制) >> /2   <<*2   & | ~ ^
        int aa = 10;
        int bb = 20;
        // 1020在前当做字符串拼接
        System.out.println("" + aa + bb);
        // 30在后计算
        System.out.println(aa + bb + "");

        // 三元运算符x?z:b 优先级()

    }

    public void test() {
    }

    static {
    }
}
